#ifndef DATO_H
#define DATO_H

#include <stdlib.h>
#include <stdio.h>
#include "TP.h"

//==============================================================================

#define DATO_ERROR 0
#define DATO_OK 1

typedef void* tDato;

typedef int (*tFcnCrearDato) (tDato* pDato);

typedef int (*tFcnDestructorDato) (tDato pDato);

typedef tBool (*tFcnIgualDato) (tDato pDatoA, tDato pDatoB);

/*
 * CrearDato:
 *      constructor del dato por defecto.
 */
void CrearDato (tDato* pDato);

/*
 * DestructorDato:
 *      destructor de dato por defecto.
 * Pre:
 *      el dato debe haber sido creado mediante CrearDato.
 */
int DestructorDato (tDato pDato);

/*
 * IgualDato:
 *      Compara pDatoA y pDatoB a nivel de referencia. Retorna TRUE en caso de
 * ser la misma entidad.  Caso contrario, retorna false.
 * 
 * Pre:
 *      pDatoA y pDatoB deben estar definidos mediante CrearDato.
 */
tBool IgualDato (tDato pDatoA, tDato pDatoB);

#endif /* DATO_H */
